package cool.taomu.toolkit.micrometer.entity

import io.swagger.annotations.ApiModel
import io.swagger.annotations.ApiModelProperty
import org.eclipse.xtend.lib.annotations.Accessors

@ApiModel(description="JVM 和系统运行时监控指标")
@Accessors
class MetricsDto {
    @ApiModelProperty(value="已使用的 JVM 内存大小", example="16109568", notes="单位：字节")
    double jvmMemoryUsedValue;

    @ApiModelProperty(value="JVM 已提交内存大小", example="2555904", notes="单位：字节")
    double jvmMemoryCommittedValue;

    @ApiModelProperty(value="JVM 最大可用内存", example="-1", notes="若为 -1 表示无限制")
    double jvmMemoryMaxValue;

    @ApiModelProperty(value="JVM 当前线程数（存活线程数）", example="20")
    double jvmThreadsLiveValue;

    @ApiModelProperty(value="守护线程数", example="9")
    double jvmThreadsDaemonValue;

    @ApiModelProperty(value="峰值线程数", example="20")
    double jvmThreadsPeakValue;

    @ApiModelProperty(value="已加载类的数量", example="7669")
    double jvmClassesLoadedValue;

    @ApiModelProperty(value="已卸载类的数量", example="0")
    double jvmClassesUnloadedCount;

    @ApiModelProperty(value="GC 总耗时", example="11623", notes="单位：毫秒")
    double jvmCompilationTimeCount;

    @ApiModelProperty(value="GC 次数", example="0")
    double jvmGcMemoryAllocatedCount;

    @ApiModelProperty(value="GC 提升到老年代的对象数量", example="0")
    double jvmGcMemoryPromotedCount;

    @ApiModelProperty(value="GC 耗时占比", example="0.0", notes="百分比")
    double jvmGcOverheadValue;

    @ApiModelProperty(value="GC 最大数据区大小", example="2044723200", notes="单位：字节")
    double jvmGcMaxDataSizeValue;

    @ApiModelProperty(value="GC 后内存使用量", example="0.0", notes="单位：字节")
    double jvmMemoryUsageAfterGcValue;

    @ApiModelProperty(value="GC 活动数据大小", example="0.0", notes="单位：字节")
    double jvmGcLiveDataSizeValue;

    @ApiModelProperty(value="缓冲池总数", example="12")
    double jvmBufferCountValue;

    @ApiModelProperty(value="缓冲池总容量", example="0.0", notes="单位：字节")
    double jvmBufferTotalCapacityValue;

    @ApiModelProperty(value="缓冲池已使用大小", example="0.0", notes="单位：字节")
    double jvmBufferMemoryUsedValue;

    @ApiModelProperty(value="死锁线程数", example="0")
    double jvmThreadsDeadlockedValue;

    @ApiModelProperty(value="死锁监视器线程数", example="0")
    double jvmThreadsDeadlockedMonitorValue;

    @ApiModelProperty(value="线程状态统计", example="0.0")
    double jvmThreadsStatesValue;

    @ApiModelProperty(value="启动的线程总数", example="20")
    double jvmThreadsStartedCount;

    @ApiModelProperty(value="CPU 核心数", example="2")
    double systemCpuCountValue;

    @ApiModelProperty(value="1 分钟平均负载", example="0.02490234375")
    double systemLoadAverage1mValue;

    @ApiModelProperty(value="进程 CPU 使用率", example="1.0", notes="范围 [0,1]，1 表示 100%")
    double processCpuUsageValue;

    @ApiModelProperty(value="进程累计 CPU 时间", example="33560000000", notes="单位：纳秒")
    double processCpuTimeCount;

    @ApiModelProperty(value="系统 CPU 使用率", example="0.0", notes="范围 [0,1]，1 表示 100%")
    double systemCpuUsageValue;
}
